package cool.webstudy.admin.service;

import cool.webstudy.admin.model.dto.file.UpdateFileRecordDTO;
import cool.webstudy.admin.model.vo.file.QueryFileRecordDetailInfoVO;
import cool.webstudy.admin.model.vo.file.UploadFileVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * @author 莫振双
 * @date 2025/2/23 11:15
 * @description: 文件记录管理接口
 */
public interface FileRecordService {
    /**
     * @param file 上传的文件对象
     * @return UploadFileVO 上传文件响应模型
     * @description: 上传文件接口
     */
    UploadFileVO uploadFile(MultipartFile file);
    /**
     * @param dto 更新文件记录接口请求参数模型
     * @return Boolean 更新文件记录接口响应模型
     * @description: 更新文件记录接口
     */
    Boolean updateFileRecord(UpdateFileRecordDTO dto);
    /**
     * @param unCode 文件记录业务主键
     * @return void
     * @description: 删除文件接口
     */
    void deleteFile(String unCode);
    /**
     * @param unCode 文件记录业务主键
     * @return QueryFileRecordDetailInfoVO 查询文件记录详情信息响应模型
     * @description: 查询文件记录详情信息接口
     */
    QueryFileRecordDetailInfoVO queryFileRecordDetailInfo(String unCode);
    /**
     * @param tableName 文件记录关联表名
     * @param tableUnCode 文件记录关联表业务主键
     * @return Boolean 删除文件记录接口响应模型
     * @description: 删除文件记录接口
     */
    Boolean deleteFileRecord(String tableName, String tableUnCode);
    /**
     * @param tableName 文件记录关联表名
     * @return Map<String, String> 键为表记录业务主键，值为文件记录业务主键
     * @description: 查询文件记录与表记录业务主键映射关系
     */
    Map<String, String> queryFileRecordAndTableUnCodeMap(String tableName);
}
